# ==================================================================================
# DescStore描述文件生成器
# ==================================================================================
# 功能说明：
#   生成游戏资源的描述存储（DescStore）头文件，这些文件包含：
#   1. NFDescStoreHead.h         - DescStore头文件包含列表
#   2. NFDescStoreDefine.h       - DescStore类型定义
#   3. NFDescStoreRegister.h     - DescStore注册函数
#   4. NFDescStoreMaxNumDefine.h - 各个表格的最大行数定义（数组大小）
#   5. 游戏元数据描述符文件     - 用于Lua等脚本语言的反射
# 
# 重要特性：
#   - patch版本会检查文件差异，如果结构发生变化会报错（保证热更新安全）
#   - NFDescStoreMaxNumDefine.h 包含各表格的 MAX_XXX_NUM 宏定义
#   - 描述符文件用于运行时的协议反射和动态解析
# 
# 依赖关系：
#   - 依赖Excel生成的临时头文件
#   - 依赖资源元数据的proto文件
# ==================================================================================

include ./define.makefile
.PHONY:all

all:${DESC_STORE_PATH}/NFDescStoreHead.h ${DESC_STORE_PATH}/NFDescStoreDefine.h ${DESC_STORE_PATH}/NFDescStoreRegister.h ${DESC_STORE_PATH}/NFDescStoreMaxNumDefine.h ${GAME_META_DESCRIPTOR}

# ----------------------------------
# 复制DescStore头文件到目标目录
# ----------------------------------
# patch版本时，如果文件内容有结构性变化，FILE_COPY_EXE 会报错并终止构建
${DESC_STORE_PATH}/NFDescStoreHead.h ${DESC_STORE_PATH}/NFDescStoreDefine.h ${DESC_STORE_PATH}/NFDescStoreRegister.h ${DESC_STORE_PATH}/NFDescStoreMaxNumDefine.h:${PROTOCGEN_FILE_PATH}/NFDescStoreHead.h ${PROTOCGEN_FILE_PATH}/NFDescStoreDefine.h ${PROTOCGEN_FILE_PATH}/NFDescStoreRegister.h  ${PROTOCGEN_FILE_PATH}/NFDescStoreMaxNumDefine.h
	@echo "  创建目标目录..."
	mkdir -p ${PROTOCGEN_FILE_PATH}
	mkdir -p ${DESC_STORE_PATH}
	@echo "  复制 NFDescStoreHead.h..."
	${FILE_COPY_EXE} --work="filecopy" --patch=${GAME_VERSION_PATCH} --src="${PROTOCGEN_FILE_PATH}/NFDescStoreHead.h" --dst=${DESC_STORE_PATH}/
	@echo "  复制 NFDescStoreDefine.h..."
	${FILE_COPY_EXE} --work="filecopy" --patch=${GAME_VERSION_PATCH}  --src="${PROTOCGEN_FILE_PATH}/NFDescStoreDefine.h" --dst=${DESC_STORE_PATH}/
	@echo "  复制 NFDescStoreRegister.h..."
	${FILE_COPY_EXE} --work="filecopy" --patch=${GAME_VERSION_PATCH}  --src="${PROTOCGEN_FILE_PATH}/NFDescStoreRegister.h" --dst=${DESC_STORE_PATH}/
	@echo "  复制 NFDescStoreMaxNumDefine.h（包含数组大小定义）..."
	${FILE_COPY_EXE} --work="filecopy" --patch=${GAME_VERSION_PATCH}  --src="${PROTOCGEN_FILE_PATH}/NFDescStoreMaxNumDefine.h" --dst=${DESC_STORE_PATH}/

# ----------------------------------
# 生成游戏元数据描述符文件
# ----------------------------------
# 描述符文件用于：
#   1. Lua脚本的协议反射
#   2. 运行时动态解析protobuf消息
#   3. 工具链的元数据查询
${GAME_META_DESCRIPTOR}:${RESDB_DESC_XML}
	@echo "  创建目标目录..."
	mkdir -p ${PROTOCGEN_FILE_PATH}
	mkdir -p ${GAME_LUA_PB_PATH}
	@echo "  生成协议描述符文件..."
	${PROTOC} $^ -I${THIRD_PARTY_INC_PATH}  -I${NANOPB_PLUGIN_PROTO} -I${PROTOCOL_PATH} -I${RESDB_META_PATH} -I${COMMON_LOGIC_META_PATH}\
			--include_imports --descriptor_set_out=${GAME_META_DESCRIPTOR}
	@echo "  复制描述符文件到Lua目录..."
	${FILE_COPY_EXE} --work="filecopy" --src="${GAME_META_DESCRIPTOR}" --dst=${GAME_LUA_PB_PATH}/